home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / AIncludes / AEDataModel.a < prev    next >
Text File  |  1996-05-01  |  29KB  |  1,082 lines

  1. ;
  2. ;    File:        AEDataModel.a
  3. ;
  4. ;    Contains:    AppleEvent Data Model Interfaces.
  5. ;
  6. ;    Version:    Technology:    Copland
  7. ;                Release:    Universal Interfaces 3.0d3 on Copland DR1
  8. ;
  9. ;    Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        If you find a problem with this file, send the file and version
  12. ;                information (from above) and the problem description to:
  13. ;
  14. ;                    Internet:    apple.bugs@applelink.apple.com
  15. ;                    AppleLink:    APPLE.BUGS
  16. ;
  17. ;
  18.     IF &TYPE('__AEDATAMODEL__') = 'UNDEFINED' THEN
  19. __AEDATAMODEL__ SET 1
  20.  
  21.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  22.     include 'Types.a'
  23.     ENDIF
  24.     IF &TYPE('__MEMORY__') = 'UNDEFINED' THEN
  25.     include 'Memory.a'
  26.     ENDIF
  27.     IF FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED THEN
  28.     IF ¨ FOR_PTR_BASED_AE THEN
  29.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  30.     include 'MixedMode.a'
  31.     ENDIF
  32.     ENDIF
  33.     ENDIF
  34.     IF FOR_SYSTEM8_PREEMPTIVE THEN
  35.     IF &TYPE('__MEMALLOCATORS__') = 'UNDEFINED' THEN
  36.     include 'MemAllocators.a'
  37.     ENDIF
  38.     ENDIF
  39.  
  40.                                                             ; Apple event descriptor types 
  41. typeBoolean                        EQU        'bool'
  42. typeChar                        EQU        'TEXT'                ; Preferred numeric Apple event descriptor types 
  43. typeSInt16                        EQU        'shor'
  44. typeSInt32                        EQU        'long'
  45. typeUInt32                        EQU        'magn'
  46. typeSInt64                        EQU        'comp'
  47. typeIEEE32BitFloatingPoint        EQU        'sing'
  48. typeIEEE64BitFloatingPoint        EQU        'doub'
  49. type128BitFloatingPoint            EQU        'ldbl'
  50. typeDecimalStruct                EQU        'decm'                ; Non-preferred Apple event descriptor types 
  51. typeSMInt                        EQU        'shor'
  52. typeShortInteger                EQU        'shor'
  53. typeInteger                        EQU        'long'
  54. typeLongInteger                    EQU        'long'
  55. typeMagnitude                    EQU        'magn'
  56. typeComp                        EQU        'comp'
  57. typeSMFloat                        EQU        'sing'
  58. typeShortFloat                    EQU        'sing'
  59. typeFloat                        EQU        'doub'
  60. typeLongFloat                    EQU        'doub'
  61. typeExtended                    EQU        'exte'                ; More Apple event descriptor types 
  62. typeAEList                        EQU        'list'
  63. typeAERecord                    EQU        'reco'
  64. typeAppleEvent                    EQU        'aevt'
  65. typeEventRecord                    EQU        'evrc'
  66. typeTrue                        EQU        'true'
  67. typeFalse                        EQU        'fals'
  68. typeAlias                        EQU        'alis'
  69. typeEnumerated                    EQU        'enum'
  70. typeType                        EQU        'type'
  71. typeAppParameters                EQU        'appa'
  72. typeProperty                    EQU        'prop'
  73. typeFSS                            EQU        'fss '
  74. typeKeyword                        EQU        'keyw'
  75. typeSectionH                    EQU        'sect'
  76. typeWildCard                    EQU        '****'
  77. typeApplSignature                EQU        'sign'
  78. typeQDRectangle                    EQU        'qdrt'
  79. typeFixed                        EQU        'fixd'
  80. typeSessionID                    EQU        'ssid'
  81. typeTargetID                    EQU        'targ'
  82. typeProcessSerialNumber            EQU        'psn '
  83. typeKernelProcessID                EQU        'kpid'
  84. typeDispatcherID                EQU        'dspt'
  85. typeNull                        EQU        'null'                ; null or nonexistent data 
  86. ;  Keywords for Apple event attributes 
  87.  
  88. keyTransactionIDAttr            EQU        'tran'
  89. keyReturnIDAttr                    EQU        'rtid'
  90. keyEventClassAttr                EQU        'evcl'
  91. keyEventIDAttr                    EQU        'evid'
  92. keyAddressAttr                    EQU        'addr'
  93. keyOptionalKeywordAttr            EQU        'optk'
  94. keyTimeoutAttr                    EQU        'timo'
  95. keyInteractLevelAttr            EQU        'inte'                ; this attribute is read only - will be set in AESend 
  96. keyEventSourceAttr                EQU        'esrc'                ; this attribute is read only 
  97. keyMissedKeywordAttr            EQU        'miss'                ; this attribute is read only 
  98. keyOriginalAddressAttr            EQU        'from'                ; new in 1.0.1 
  99. ;     Constants used for specifying the factoring of AEDescLists. 
  100.  
  101. kAEDescListFactorNone            EQU        0
  102. kAEDescListFactorType            EQU        4
  103. kAEDescListFactorTypeAndSize    EQU        8
  104. ;  Constants used creating an AppleEvent 
  105.  
  106.                                                             ; Constant for the returnID param of AECreateAppleEvent 
  107. kAutoGenerateReturnID            EQU        -1                    ; AECreateAppleEvent will generate a session-unique ID 
  108.                                                             ; Constant for transaction ID's 
  109. kAnyTransactionID                EQU        0                    ; no transaction is in use 
  110. ;  Apple event manager data types 
  111. ; typedef ResType                         DescType
  112.  
  113. ; typedef FourCharCode                     AEKeyword
  114.  
  115.     IF FOR_PTR_BASED_AE THEN
  116.  
  117.  
  118. AEDesc                    RECORD 0
  119. descriptorType             ds.l    1                ; offset: $0 (0)
  120. descriptorData             ds.l    1                ; offset: $4 (4)
  121. sizeof                     EQU *                    ; size:   $8 (8)
  122.                         ENDR
  123. ; typedef AEDesc *            AEDescPtr;
  124.     ELSE
  125. AEDesc                    RECORD 0
  126. descriptorType             ds.l    1                ; offset: $0 (0)
  127. dataHandle                 ds.l    1                ; offset: $4 (4)
  128. sizeof                     EQU *                    ; size:   $8 (8)
  129.                         ENDR
  130. ; typedef struct AEDesc *                AEDescPtr
  131.  
  132.     ENDIF
  133. AEKeyDesc                RECORD 0
  134. descKey                     ds.l    1                ; offset: $0 (0)
  135. descContent                 ds        AEDesc            ; offset: $4 (4)
  136. sizeof                     EQU *                    ; size:   $C (12)
  137.                         ENDR
  138. ;  a list of AEDesc's is a special kind of AEDesc 
  139. AEDescList                RECORD 0
  140. f                         ds        AEDesc
  141. sizeof                     EQU *                    ; size:   $8 (8)
  142.                         ENDR
  143.  
  144.  
  145. ;  AERecord is a list of keyworded AEDesc's 
  146. AERecord                RECORD 0
  147. f                         ds        AEDescList
  148. sizeof                     EQU *                    ; size:   $8 (8)
  149.                         ENDR
  150.  
  151.  
  152. ;  an AEDesc which contains address data 
  153. AEAddressDesc            RECORD 0
  154. f                         ds        AEDesc
  155. sizeof                     EQU *                    ; size:   $8 (8)
  156.                         ENDR
  157.  
  158.  
  159. ;  an AERecord that contains an AppleEvent, and related data types 
  160. AppleEvent                RECORD 0
  161. f                         ds        AERecord
  162. sizeof                     EQU *                    ; size:   $8 (8)
  163.                         ENDR
  164.  
  165.  
  166. ; typedef struct AppleEvent *            AppleEventPtr
  167.  
  168. ; typedef SInt16                         AEReturnID
  169.  
  170. ; typedef SInt32                         AETransactionID
  171.  
  172. ; typedef FourCharCode                     AEEventClass
  173.  
  174. ; typedef FourCharCode                     AEEventID
  175.  
  176. ; typedef SInt8                         AEArrayType
  177.  
  178.  
  179. kAEDataArray                    EQU        0
  180. kAEPackedArray                    EQU        1
  181. kAEDescArray                    EQU        3
  182. kAEKeyDescArray                    EQU        4
  183.     IF FOR_PTR_BASED_AE THEN
  184. AEArrayData                RECORD 0
  185. kAEDataArray             ds.w    1                ; offset: $0 (0) <-- really an array of length one
  186.                          ORG 0
  187. kAEPackedArray             ds.b    1                ; offset: $0 (0) <-- really an array of length one
  188.                          ORG 0
  189. kAEDescArray             ds        AEDesc            ; offset: $0 (0) <-- really an array of length one
  190.                          ORG 0
  191. kAEKeyDescArray             ds        AEKeyDesc        ; offset: $0 (0) <-- really an array of length one
  192. sizeof                     EQU *                    ; size:   $C (12)
  193.                         ENDR
  194.     ELSE
  195.  
  196. kAEHandleArray                    EQU        2
  197. AEArrayData                RECORD 0
  198. kAEDataArray             ds.w    1                ; offset: $0 (0) <-- really an array of length one
  199.                          ORG 0
  200. kAEPackedArray             ds.b    1                ; offset: $0 (0) <-- really an array of length one
  201.                          ORG 0
  202. kAEHandleArray             ds.l    1                ; offset: $0 (0) <-- really an array of length one
  203.                          ORG 0
  204. kAEDescArray             ds        AEDesc            ; offset: $0 (0) <-- really an array of length one
  205.                          ORG 0
  206. kAEKeyDescArray             ds        AEKeyDesc        ; offset: $0 (0) <-- really an array of length one
  207. sizeof                     EQU *                    ; size:   $C (12)
  208.                         ENDR
  209.     ENDIF
  210. ; typedef union AEArrayData *            AEArrayDataPointer
  211.  
  212. ;
  213. ;*************************************************************************
  214. ;  These calls are used to set up and modify the coercion dispatch table.
  215. ;*************************************************************************
  216. ;
  217.     IF FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED THEN
  218.     IF ¨ FOR_PTR_BASED_AE THEN
  219. ; typedef UniversalProcPtr                 AECoercionHandlerUPP
  220.  
  221. ;
  222. ; pascal OSErr AEInstallCoercionHandler(DescType fromType, DescType toType, AECoercionHandlerUPP handler, long handlerRefcon, Boolean fromTypeIsDesc, Boolean isSysHandler)
  223. ;
  224.     IF ¨ GENERATINGCFM THEN
  225.         Macro
  226.         _AEInstallCoercionHandler
  227.             move.w              #$0A22,D0
  228.             dc.w                $A816
  229.         EndM
  230.     ELSE
  231.         IMPORT_CFM_FUNCTION AEInstallCoercionHandler
  232.     ENDIF
  233.  
  234. ;
  235. ; pascal OSErr AERemoveCoercionHandler(DescType fromType, DescType toType, AECoercionHandlerUPP handler, Boolean isSysHandler)
  236. ;
  237.     IF ¨ GENERATINGCFM THEN
  238.         Macro
  239.         _AERemoveCoercionHandler
  240.             move.w              #$0723,D0
  241.             dc.w                $A816
  242.         EndM
  243.     ELSE
  244.         IMPORT_CFM_FUNCTION AERemoveCoercionHandler
  245.     ENDIF
  246.  
  247. ;
  248. ; pascal OSErr AEGetCoercionHandler(DescType fromType, DescType toType, AECoercionHandlerUPP *handler, long *handlerRefcon, Boolean *fromTypeIsDesc, Boolean isSysHandler)
  249. ;
  250.     IF ¨ GENERATINGCFM THEN
  251.         Macro
  252.         _AEGetCoercionHandler
  253.             move.w              #$0B24,D0
  254.             dc.w                $A816
  255.         EndM
  256.     ELSE
  257.         IMPORT_CFM_FUNCTION AEGetCoercionHandler
  258.     ENDIF
  259.  
  260.     ENDIF
  261.     ENDIF
  262.     IF FOR_SYSTEM8_PREEMPTIVE THEN
  263.     IF FOR_PTR_BASED_AE THEN
  264. ;
  265. ; extern OSStatus AEInstallCoercion(DescType fromType, DescType toType, AECoercionProc handler, void *handlerRefcon)
  266. ;
  267.     IF GENERATINGCFM THEN
  268.         IMPORT_CFM_FUNCTION AEInstallCoercion
  269.     ENDIF
  270.  
  271. ;
  272. ; extern OSStatus AERemoveCoercion(DescType fromType, DescType toType, AECoercionProc handler)
  273. ;
  274.     IF GENERATINGCFM THEN
  275.         IMPORT_CFM_FUNCTION AERemoveCoercion
  276.     ENDIF
  277.  
  278. ;
  279. ; extern OSStatus AEGetCoercion(DescType fromType, DescType toType, AECoercionProc *handler, void **handlerRefcon)
  280. ;
  281.     IF GENERATINGCFM THEN
  282.         IMPORT_CFM_FUNCTION AEGetCoercion
  283.     ENDIF
  284.  
  285.     ENDIF
  286.     ENDIF
  287. ;
  288. ;*************************************************************************
  289. ;  The following calls provide for a coercion interface.
  290. ;*************************************************************************
  291. ;
  292.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  293. ;
  294. ; pascal OSErr AECoercePtr(DescType typeCode, const void *dataPtr, Size dataSize, DescType toType, AEDesc *result)
  295. ;
  296.     IF ¨ GENERATINGCFM THEN
  297.         Macro
  298.         _AECoercePtr
  299.             move.w              #$0A02,D0
  300.             dc.w                $A816
  301.         EndM
  302.     ELSE
  303.         IMPORT_CFM_FUNCTION AECoercePtr
  304.     ENDIF
  305.  
  306. ;
  307. ; pascal OSErr AECoerceDesc(const AEDesc *theAEDesc, DescType toType, AEDesc *result)
  308. ;
  309.     IF ¨ GENERATINGCFM THEN
  310.         Macro
  311.         _AECoerceDesc
  312.             move.w              #$0603,D0
  313.             dc.w                $A816
  314.         EndM
  315.     ELSE
  316.         IMPORT_CFM_FUNCTION AECoerceDesc
  317.     ENDIF
  318.  
  319.     ENDIF
  320. ;
  321. ;*************************************************************************
  322. ; The following calls apply to any AEDesc. Every 'result' descriptor is
  323. ; created for you, so you will be responsible for memory management
  324. ; (including disposing) of the descriptors so created.  
  325. ;*************************************************************************
  326. ;
  327.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  328. ;
  329. ; pascal OSErr AECreateDesc(DescType typeCode, const void *dataPtr, Size dataSize, AEDesc *result)
  330. ;
  331.     IF ¨ GENERATINGCFM THEN
  332.         Macro
  333.         _AECreateDesc
  334.             move.w              #$0825,D0
  335.             dc.w                $A816
  336.         EndM
  337.     ELSE
  338.         IMPORT_CFM_FUNCTION AECreateDesc
  339.     ENDIF
  340.  
  341. ;
  342. ; pascal OSErr AEDisposeDesc(AEDesc *theAEDesc)
  343. ;
  344.     IF ¨ GENERATINGCFM THEN
  345.         Macro
  346.         _AEDisposeDesc
  347.             move.w              #$0204,D0
  348.             dc.w                $A816
  349.         EndM
  350.     ELSE
  351.         IMPORT_CFM_FUNCTION AEDisposeDesc
  352.     ENDIF
  353.  
  354. ;
  355. ; pascal OSErr AEDuplicateDesc(const AEDesc *theAEDesc, AEDesc *result)
  356. ;
  357.     IF ¨ GENERATINGCFM THEN
  358.         Macro
  359.         _AEDuplicateDesc
  360.             move.w              #$0405,D0
  361.             dc.w                $A816
  362.         EndM
  363.     ELSE
  364.         IMPORT_CFM_FUNCTION AEDuplicateDesc
  365.     ENDIF
  366.  
  367.     ENDIF
  368.     IF FOR_SYSTEM8_PREEMPTIVE THEN
  369.     IF FOR_PTR_BASED_AE THEN
  370. ;
  371. ; extern OSStatus AEClearDesc(AEDesc *descToClear)
  372. ;
  373.     IF GENERATINGCFM THEN
  374.         IMPORT_CFM_FUNCTION AEClearDesc
  375.     ENDIF
  376.  
  377. ;
  378. ; extern Boolean AEDescIsNull(const AEDesc *desc)
  379. ;
  380.     IF GENERATINGCFM THEN
  381.         IMPORT_CFM_FUNCTION AEDescIsNull
  382.     ENDIF
  383.  
  384. ;
  385. ; extern OSStatus AESizeOfDescData(const AEDesc *desc, DescType *descriptorType, ByteCount *dataSize)
  386. ;
  387.     IF GENERATINGCFM THEN
  388.         IMPORT_CFM_FUNCTION AESizeOfDescData
  389.     ENDIF
  390.  
  391. ;
  392. ; extern OSStatus AEGetDescData(const AEDesc *desc, DescType *typeCode, void *dataBuffer, ByteCount maximumSize, ByteCount *actualSize)
  393. ;
  394.     IF GENERATINGCFM THEN
  395.         IMPORT_CFM_FUNCTION AEGetDescData
  396.     ENDIF
  397.  
  398.     ENDIF
  399.     ENDIF
  400. ;
  401. ;*************************************************************************
  402. ;  The following calls apply to AEDescList. Since AEDescList is a subtype of
  403. ;  AEDesc, the calls in the previous section can also be used for AEDescList.
  404. ;  All list and array indices are 1-based. If the data was greater than
  405. ;  maximumSize in the routines below, then actualSize will be greater than
  406. ;  maximumSize, but only maximumSize bytes will actually be retrieved.
  407. ;*************************************************************************
  408. ;
  409.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  410. ;
  411. ; pascal OSErr AECreateList(const void *factoringPtr, Size factoredSize, Boolean isRecord, AEDescList *resultList)
  412. ;
  413.     IF ¨ GENERATINGCFM THEN
  414.         Macro
  415.         _AECreateList
  416.             move.w              #$0706,D0
  417.             dc.w                $A816
  418.         EndM
  419.     ELSE
  420.         IMPORT_CFM_FUNCTION AECreateList
  421.     ENDIF
  422.  
  423. ;
  424. ; pascal OSErr AECountItems(const AEDescList *theAEDescList, long *theCount)
  425. ;
  426.     IF ¨ GENERATINGCFM THEN
  427.         Macro
  428.         _AECountItems
  429.             move.w              #$0407,D0
  430.             dc.w                $A816
  431.         EndM
  432.     ELSE
  433.         IMPORT_CFM_FUNCTION AECountItems
  434.     ENDIF
  435.  
  436. ;
  437. ; pascal OSErr AEPutPtr(AEDescList *theAEDescList, long index, DescType typeCode, const void *dataPtr, Size dataSize)
  438. ;
  439.     IF ¨ GENERATINGCFM THEN
  440.         Macro
  441.         _AEPutPtr
  442.             move.w              #$0A08,D0
  443.             dc.w                $A816
  444.         EndM
  445.     ELSE
  446.         IMPORT_CFM_FUNCTION AEPutPtr
  447.     ENDIF
  448.  
  449. ;
  450. ; pascal OSErr AEPutDesc(AEDescList *theAEDescList, long index, const AEDesc *theAEDesc)
  451. ;
  452.     IF ¨ GENERATINGCFM THEN
  453.         Macro
  454.         _AEPutDesc
  455.             move.w              #$0609,D0
  456.             dc.w                $A816
  457.         EndM
  458.     ELSE
  459.         IMPORT_CFM_FUNCTION AEPutDesc
  460.     ENDIF
  461.  
  462. ;
  463. ; pascal OSErr AEGetNthPtr(const AEDescList *theAEDescList, long index, DescType desiredType, AEKeyword *theAEKeyword, DescType *typeCode, void *dataPtr, Size maximumSize, Size *actualSize)
  464. ;
  465.     IF ¨ GENERATINGCFM THEN
  466.         Macro
  467.         _AEGetNthPtr
  468.             move.w              #$100A,D0
  469.             dc.w                $A816
  470.         EndM
  471.     ELSE
  472.         IMPORT_CFM_FUNCTION AEGetNthPtr
  473.     ENDIF
  474.  
  475. ;
  476. ; pascal OSErr AEGetNthDesc(const AEDescList *theAEDescList, long index, DescType desiredType, AEKeyword *theAEKeyword, AEDesc *result)
  477. ;
  478.     IF ¨ GENERATINGCFM THEN
  479.         Macro
  480.         _AEGetNthDesc
  481.             move.w              #$0A0B,D0
  482.             dc.w                $A816
  483.         EndM
  484.     ELSE
  485.         IMPORT_CFM_FUNCTION AEGetNthDesc
  486.     ENDIF
  487.  
  488. ;
  489. ; pascal OSErr AESizeOfNthItem(const AEDescList *theAEDescList, long index, DescType *typeCode, Size *dataSize)
  490. ;
  491.     IF ¨ GENERATINGCFM THEN
  492.         Macro
  493.         _AESizeOfNthItem
  494.             move.w              #$082A,D0
  495.             dc.w                $A816
  496.         EndM
  497.     ELSE
  498.         IMPORT_CFM_FUNCTION AESizeOfNthItem
  499.     ENDIF
  500.  
  501. ;
  502. ; pascal OSErr AEGetArray(const AEDescList *theAEDescList, AEArrayType arrayType, AEArrayDataPointer arrayPtr, Size maximumSize, DescType *itemType, Size *itemSize, long *itemCount)
  503. ;
  504.     IF ¨ GENERATINGCFM THEN
  505.         Macro
  506.         _AEGetArray
  507.             move.w              #$0D0C,D0
  508.             dc.w                $A816
  509.         EndM
  510.     ELSE
  511.         IMPORT_CFM_FUNCTION AEGetArray
  512.     ENDIF
  513.  
  514. ;
  515. ; pascal OSErr AEPutArray(AEDescList *theAEDescList, AEArrayType arrayType, const AEArrayData *arrayPtr, DescType itemType, Size itemSize, long itemCount)
  516. ;
  517.     IF ¨ GENERATINGCFM THEN
  518.         Macro
  519.         _AEPutArray
  520.             move.w              #$0B0D,D0
  521.             dc.w                $A816
  522.         EndM
  523.     ELSE
  524.         IMPORT_CFM_FUNCTION AEPutArray
  525.     ENDIF
  526.  
  527. ;
  528. ; pascal OSErr AEDeleteItem(AEDescList *theAEDescList, long index)
  529. ;
  530.     IF ¨ GENERATINGCFM THEN
  531.         Macro
  532.         _AEDeleteItem
  533.             move.w              #$040E,D0
  534.             dc.w                $A816
  535.         EndM
  536.     ELSE
  537.         IMPORT_CFM_FUNCTION AEDeleteItem
  538.     ENDIF
  539.  
  540.     ENDIF
  541. ;
  542. ;*************************************************************************
  543. ; The following calls apply to AERecord. Since AERecord is a subtype of
  544. ; AEDescList, the calls in the previous sections can also be used for
  545. ; AERecord an AERecord can be created by using AECreateList with isRecord
  546. ; set to true. 
  547. ;*************************************************************************
  548. ;
  549. ;
  550. ;  Note: none of the ``key'' calls were available in the PowerPC 7.x IntefaceLib.
  551. ;  In C, a #define is used to map ``key'' calls to ``param'' calls.  In pascal
  552. ;  this mapping is done in externally linked glue code.
  553. ;
  554.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  555. ;
  556. ; pascal OSErr AEPutKeyPtr(AERecord *theAERecord, AEKeyword theAEKeyword, DescType typeCode, const void *dataPtr, Size dataSize)
  557. ;
  558.     IF ¨ GENERATINGCFM THEN
  559.         Macro
  560.         _AEPutKeyPtr
  561.             move.w              #$0A0F,D0
  562.             dc.w                $A816
  563.         EndM
  564.     ELSE
  565.         IMPORT_CFM_FUNCTION AEPutKeyPtr
  566.     ENDIF
  567.  
  568. ;
  569. ; pascal OSErr AEPutKeyDesc(AERecord *theAERecord, AEKeyword theAEKeyword, const AEDesc *theAEDesc)
  570. ;
  571.     IF ¨ GENERATINGCFM THEN
  572.         Macro
  573.         _AEPutKeyDesc
  574.             move.w              #$0610,D0
  575.             dc.w                $A816
  576.         EndM
  577.     ELSE
  578.         IMPORT_CFM_FUNCTION AEPutKeyDesc
  579.     ENDIF
  580.  
  581. ;
  582. ; pascal OSErr AEGetKeyPtr(const AERecord *theAERecord, AEKeyword theAEKeyword, DescType desiredType, DescType *typeCode, void *dataPtr, Size maximumSize, Size *actualSize)
  583. ;
  584.     IF ¨ GENERATINGCFM THEN
  585.         Macro
  586.         _AEGetKeyPtr
  587.             move.w              #$0E11,D0
  588.             dc.w                $A816
  589.         EndM
  590.     ELSE
  591.         IMPORT_CFM_FUNCTION AEGetKeyPtr
  592.     ENDIF
  593.  
  594. ;
  595. ; pascal OSErr AEGetKeyDesc(const AERecord *theAERecord, AEKeyword theAEKeyword, DescType desiredType, AEDesc *result)
  596. ;
  597.     IF ¨ GENERATINGCFM THEN
  598.         Macro
  599.         _AEGetKeyDesc
  600.             move.w              #$0812,D0
  601.             dc.w                $A816
  602.         EndM
  603.     ELSE
  604.         IMPORT_CFM_FUNCTION AEGetKeyDesc
  605.     ENDIF
  606.  
  607. ;
  608. ; pascal OSErr AESizeOfKeyDesc(const AERecord *theAERecord, AEKeyword theAEKeyword, DescType *typeCode, Size *dataSize)
  609. ;
  610.     IF ¨ GENERATINGCFM THEN
  611.         Macro
  612.         _AESizeOfKeyDesc
  613.             move.w              #$0829,D0
  614.             dc.w                $A816
  615.         EndM
  616.     ELSE
  617.         IMPORT_CFM_FUNCTION AESizeOfKeyDesc
  618.     ENDIF
  619.  
  620. ;
  621. ; pascal OSErr AEDeleteKeyDesc(AERecord *theAERecord, AEKeyword theAEKeyword)
  622. ;
  623.     IF ¨ GENERATINGCFM THEN
  624.         Macro
  625.         _AEDeleteKeyDesc
  626.             move.w              #$0413,D0
  627.             dc.w                $A816
  628.         EndM
  629.     ELSE
  630.         IMPORT_CFM_FUNCTION AEDeleteKeyDesc
  631.     ENDIF
  632.  
  633.     ENDIF
  634.     IF FOR_SYSTEM7_ONLY THEN
  635. ;
  636. ;  Note: The following #defines map ``key'' calls on AERecords into ``param'' calls on 
  637. ;  AppleEvents.  Although no errors are currently returned if AERecords are 
  638. ;  passed to ``param'' calls and AppleEvents to ``key'' calls, the behavior of 
  639. ;  this type of API-mixing is not explicitly documented in Inside Macintosh.  
  640. ;  It just happens that the ``key'' calls have the same functionality as their 
  641. ;  ``param'' counterparts.  Since none of the ``key'' calls are currently available 
  642. ;  in the PowerPC IntefaceLib, the #defines exploit the fact that ``key'' and 
  643. ;  ``param'' routines can be used interchangeably, and makes sure that every 
  644. ;  invokation of a ``key'' API becomes an invokation of a ``param'' API.
  645. ;
  646.     ENDIF
  647. ;
  648. ;*************************************************************************
  649. ;  The following calls create and manipulate the AppleEvent data type.
  650. ;*************************************************************************
  651. ;
  652.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  653. ;
  654. ; pascal OSErr AECreateAppleEvent(AEEventClass theAEEventClass, AEEventID theAEEventID, const AEAddressDesc *target, AEReturnID returnID, AETransactionID transactionID, AppleEvent *result)
  655. ;
  656.     IF ¨ GENERATINGCFM THEN
  657.         Macro
  658.         _AECreateAppleEvent
  659.             move.w              #$0B14,D0
  660.             dc.w                $A816
  661.         EndM
  662.     ELSE
  663.         IMPORT_CFM_FUNCTION AECreateAppleEvent
  664.     ENDIF
  665.  
  666.     ENDIF
  667.     IF FOR_SYSTEM8_PREEMPTIVE THEN
  668.     IF FOR_PTR_BASED_AE THEN
  669. ;
  670. ; extern OSStatus AECustomCreateAppleEvent(AEEventClass theAEEventClass, AEEventID theAEEventID, const AEAddressDesc *target, AEReturnID returnID, AETransactionID transactionID, MemAllocatorRef allocator, AppleEvent *result)
  671. ;
  672.     IF GENERATINGCFM THEN
  673.         IMPORT_CFM_FUNCTION AECustomCreateAppleEvent
  674.     ENDIF
  675.  
  676. ;
  677. ; extern OSStatus AECreateReplyAppleEvent(const AEAddressDesc *replyAddress, MemAllocatorRef allocator, AppleEvent *result)
  678. ;
  679.     IF GENERATINGCFM THEN
  680.         IMPORT_CFM_FUNCTION AECreateReplyAppleEvent
  681.     ENDIF
  682.  
  683.     ENDIF
  684.     ENDIF
  685. ;
  686. ;*************************************************************************
  687. ;  The following calls are used to pack and unpack parameters from records
  688. ;  of type AppleEvent. Since AppleEvent is a subtype of AERecord, the calls
  689. ;  in the previous sections can also be used for variables of type
  690. ;  AppleEvent. The next six calls are in fact identical to the six calls
  691. ;  for AERecord.
  692. ;*************************************************************************
  693. ;
  694.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  695. ;
  696. ; pascal OSErr AEPutParamPtr(AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType typeCode, const void *dataPtr, Size dataSize)
  697. ;
  698.     IF ¨ GENERATINGCFM THEN
  699.         Macro
  700.         _AEPutParamPtr
  701.             move.w              #$0A0F,D0
  702.             dc.w                $A816
  703.         EndM
  704.     ELSE
  705.         IMPORT_CFM_FUNCTION AEPutParamPtr
  706.     ENDIF
  707.  
  708. ;
  709. ; pascal OSErr AEPutParamDesc(AppleEvent *theAppleEvent, AEKeyword theAEKeyword, const AEDesc *theAEDesc)
  710. ;
  711.     IF ¨ GENERATINGCFM THEN
  712.         Macro
  713.         _AEPutParamDesc
  714.             move.w              #$0610,D0
  715.             dc.w                $A816
  716.         EndM
  717.     ELSE
  718.         IMPORT_CFM_FUNCTION AEPutParamDesc
  719.     ENDIF
  720.  
  721. ;
  722. ; pascal OSErr AEGetParamPtr(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType desiredType, DescType *typeCode, void *dataPtr, Size maximumSize, Size *actualSize)
  723. ;
  724.     IF ¨ GENERATINGCFM THEN
  725.         Macro
  726.         _AEGetParamPtr
  727.             move.w              #$0E11,D0
  728.             dc.w                $A816
  729.         EndM
  730.     ELSE
  731.         IMPORT_CFM_FUNCTION AEGetParamPtr
  732.     ENDIF
  733.  
  734. ;
  735. ; pascal OSErr AEGetParamDesc(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType desiredType, AEDesc *result)
  736. ;
  737.     IF ¨ GENERATINGCFM THEN
  738.         Macro
  739.         _AEGetParamDesc
  740.             move.w              #$0812,D0
  741.             dc.w                $A816
  742.         EndM
  743.     ELSE
  744.         IMPORT_CFM_FUNCTION AEGetParamDesc
  745.     ENDIF
  746.  
  747. ;
  748. ; pascal OSErr AESizeOfParam(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType *typeCode, Size *dataSize)
  749. ;
  750.     IF ¨ GENERATINGCFM THEN
  751.         Macro
  752.         _AESizeOfParam
  753.             move.w              #$0829,D0
  754.             dc.w                $A816
  755.         EndM
  756.     ELSE
  757.         IMPORT_CFM_FUNCTION AESizeOfParam
  758.     ENDIF
  759.  
  760. ;
  761. ; pascal OSErr AEDeleteParam(AppleEvent *theAppleEvent, AEKeyword theAEKeyword)
  762. ;
  763.     IF ¨ GENERATINGCFM THEN
  764.         Macro
  765.         _AEDeleteParam
  766.             move.w              #$0413,D0
  767.             dc.w                $A816
  768.         EndM
  769.     ELSE
  770.         IMPORT_CFM_FUNCTION AEDeleteParam
  771.     ENDIF
  772.  
  773.     ENDIF
  774. ;
  775. ;*************************************************************************
  776. ; The following calls also apply to type AppleEvent. Message attributes are
  777. ; far more restricted, and can only be accessed through the following 5
  778. ; calls. The various list and record routines cannot be used to access the
  779. ; attributes of an event. 
  780. ;*************************************************************************
  781. ;
  782.     IF FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE THEN
  783. ;
  784. ; pascal OSErr AEGetAttributePtr(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType desiredType, DescType *typeCode, void *dataPtr, Size maximumSize, Size *actualSize)
  785. ;
  786.     IF ¨ GENERATINGCFM THEN
  787.         Macro
  788.         _AEGetAttributePtr
  789.             move.w              #$0E15,D0
  790.             dc.w                $A816
  791.         EndM
  792.     ELSE
  793.         IMPORT_CFM_FUNCTION AEGetAttributePtr
  794.     ENDIF
  795.  
  796. ;
  797. ; pascal OSErr AEGetAttributeDesc(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType desiredType, AEDesc *result)
  798. ;
  799.     IF ¨ GENERATINGCFM THEN
  800.         Macro
  801.         _AEGetAttributeDesc
  802.             move.w              #$0826,D0
  803.             dc.w                $A816
  804.         EndM
  805.     ELSE
  806.         IMPORT_CFM_FUNCTION AEGetAttributeDesc
  807.     ENDIF
  808.  
  809. ;
  810. ; pascal OSErr AESizeOfAttribute(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType *typeCode, Size *dataSize)
  811. ;
  812.     IF ¨ GENERATINGCFM THEN
  813.         Macro
  814.         _AESizeOfAttribute
  815.             move.w              #$0828,D0
  816.             dc.w                $A816
  817.         EndM
  818.     ELSE
  819.         IMPORT_CFM_FUNCTION AESizeOfAttribute
  820.     ENDIF
  821.  
  822. ;
  823. ; pascal OSErr AEPutAttributePtr(AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType typeCode, const void *dataPtr, Size dataSize)
  824. ;
  825.     IF ¨ GENERATINGCFM THEN
  826.         Macro
  827.         _AEPutAttributePtr
  828.             move.w              #$0A16,D0
  829.             dc.w                $A816
  830.         EndM
  831.     ELSE
  832.         IMPORT_CFM_FUNCTION AEPutAttributePtr
  833.     ENDIF
  834.  
  835. ;
  836. ; pascal OSErr AEPutAttributeDesc(AppleEvent *theAppleEvent, AEKeyword theAEKeyword, const AEDesc *theAEDesc)
  837. ;
  838.     IF ¨ GENERATINGCFM THEN
  839.         Macro
  840.         _AEPutAttributeDesc
  841.             move.w              #$0627,D0
  842.             dc.w                $A816
  843.         EndM
  844.     ELSE
  845.         IMPORT_CFM_FUNCTION AEPutAttributeDesc
  846.     ENDIF
  847.  
  848.     ENDIF
  849.     IF FOR_SYSTEM8_PREEMPTIVE THEN
  850.     IF FOR_PTR_BASED_AE THEN
  851. ;
  852. ;*************************************************************************
  853. ;  These calls are used to convert AEDescs into a "flattened", canonical 
  854. ;  form and back again.
  855. ;*************************************************************************
  856. ;
  857. ;
  858. ; extern OSStatus AEConvertDescToAEDF(const AEDesc *descriptor, void *dataBuffer, ByteCount maximumSize, ByteCount *actualSize)
  859. ;
  860.     IF GENERATINGCFM THEN
  861.         IMPORT_CFM_FUNCTION AEConvertDescToAEDF
  862.     ENDIF
  863.  
  864. ;
  865. ; extern OSStatus AEConvertAEDFToDesc(const void *dataBuffer, ByteCount bufferSize, AEDesc *result)
  866. ;
  867.     IF GENERATINGCFM THEN
  868.         IMPORT_CFM_FUNCTION AEConvertAEDFToDesc
  869.     ENDIF
  870.  
  871. ;
  872. ; extern OSStatus AEConvertAEDFToAppleEvent(AEEventClass eventClass, AEEventID eventID, const AEAddressDesc *target, AEReturnID returnID, AETransactionID transactionID, const void *dataBuffer, ByteCount bufferSize, MemAllocatorRef allocator, AppleEvent *result)
  873. ;
  874.     IF GENERATINGCFM THEN
  875.         IMPORT_CFM_FUNCTION AEConvertAEDFToAppleEvent
  876.     ENDIF
  877.  
  878. ;
  879. ;*************************************************************************
  880. ;  The following calls apply to AEStreams.  Once a AEStream has been 
  881. ;  fully written, it may be converted to an AEDesc, AEDescList or AERecord
  882. ;  to be used by the various other routines listed above.
  883. ;*************************************************************************
  884. ;
  885.  
  886.  
  887. ;
  888. ; extern OSStatus AECreateStream(MemAllocatorRef allocator, AEStream *newStream)
  889. ;
  890.     IF GENERATINGCFM THEN
  891.         IMPORT_CFM_FUNCTION AECreateStream
  892.     ENDIF
  893.  
  894. ;
  895. ; extern OSStatus AECreateStreamToAppendDescList(const AEDescList *source, MemAllocatorRef allocator, AEStream *newStream)
  896. ;
  897.     IF GENERATINGCFM THEN
  898.         IMPORT_CFM_FUNCTION AECreateStreamToAppendDescList
  899.     ENDIF
  900.  
  901. ;
  902. ; extern OSStatus AEDisposeStream(AEStream deadStream)
  903. ;
  904.     IF GENERATINGCFM THEN
  905.         IMPORT_CFM_FUNCTION AEDisposeStream
  906.     ENDIF
  907.  
  908. ;
  909. ; extern OSStatus AEWriteStreamKey(AEStream stream, AEKeyword keyword)
  910. ;
  911.     IF GENERATINGCFM THEN
  912.         IMPORT_CFM_FUNCTION AEWriteStreamKey
  913.     ENDIF
  914.  
  915. ;
  916. ; extern OSStatus AEWriteStreamPtr(AEStream stream, void *dataPtr, ByteCount dataSize)
  917. ;
  918.     IF GENERATINGCFM THEN
  919.         IMPORT_CFM_FUNCTION AEWriteStreamPtr
  920.     ENDIF
  921.  
  922. ;
  923. ; extern OSStatus AEWriteStreamDesc(AEStream stream, DescType dataType, void *dataPtr, ByteCount dataSize)
  924. ;
  925.     IF GENERATINGCFM THEN
  926.         IMPORT_CFM_FUNCTION AEWriteStreamDesc
  927.     ENDIF
  928.  
  929. ;
  930. ; extern OSStatus AEWriteStreamAEDesc(AEStream stream, const AEDesc *desc)
  931. ;
  932.     IF GENERATINGCFM THEN
  933.         IMPORT_CFM_FUNCTION AEWriteStreamAEDesc
  934.     ENDIF
  935.  
  936. ;
  937. ; extern OSStatus AEOpenStreamDesc(AEStream stream, DescType descriptorType)
  938. ;
  939.     IF GENERATINGCFM THEN
  940.         IMPORT_CFM_FUNCTION AEOpenStreamDesc
  941.     ENDIF
  942.  
  943. ;
  944. ; extern OSStatus AEOpenStreamList(AEStream stream, void *factorData, ByteCount factorSize, Boolean isRecord)
  945. ;
  946.     IF GENERATINGCFM THEN
  947.         IMPORT_CFM_FUNCTION AEOpenStreamList
  948.     ENDIF
  949.  
  950. ;
  951. ; extern OSStatus AECloseStreamDesc(AEStream stream)
  952. ;
  953.     IF GENERATINGCFM THEN
  954.         IMPORT_CFM_FUNCTION AECloseStreamDesc
  955.     ENDIF
  956.  
  957. ;
  958. ; extern OSStatus AEConvertStreamToDesc(AEStream stream, AEDesc *desc)
  959. ;
  960.     IF GENERATINGCFM THEN
  961.         IMPORT_CFM_FUNCTION AEConvertStreamToDesc
  962.     ENDIF
  963.  
  964. ;
  965. ; extern OSStatus AEConvertStreamToAEDF(AEStream stream, void *dataBuffer, ByteCount maximumSize, ByteCount *actualSize)
  966. ;
  967.     IF GENERATINGCFM THEN
  968.         IMPORT_CFM_FUNCTION AEConvertStreamToAEDF
  969.     ENDIF
  970.  
  971. ;
  972. ; extern OSStatus AEConvertStreamToAppleEvent(AEEventClass eventClass, AEEventID eventID, const AEAddressDesc *target, AEReturnID returnID, AETransactionID transactionID, AEStream stream, MemAllocatorRef allocator, AppleEvent *result)
  973. ;
  974.     IF GENERATINGCFM THEN
  975.         IMPORT_CFM_FUNCTION AEConvertStreamToAppleEvent
  976.     ENDIF
  977.  
  978. ;
  979. ;*************************************************************************
  980. ;  The following calls apply to AESubDescs.  AESubDescs provide an efficient
  981. ;  way to traverse recursive AERecords and AEDescLists.
  982. ;*************************************************************************
  983. ;
  984. OpaqueAESubDesc            RECORD 0
  985. reserved                 ds.l    8                ; offset: $0 (0)
  986. sizeof                     EQU *                    ; size:   $20 (32)
  987.                         ENDR
  988. AESubDesc                RECORD 0
  989. f                         ds        OpaqueAESubDesc
  990. sizeof                     EQU *                    ; size:   $20 (32)
  991.                         ENDR
  992.  
  993.  
  994. ;
  995. ; extern OSStatus AEConvertDescToSubDesc(const AEDesc *desc, AESubDesc *newSubDesc)
  996. ;
  997.     IF GENERATINGCFM THEN
  998.         IMPORT_CFM_FUNCTION AEConvertDescToSubDesc
  999.     ENDIF
  1000.  
  1001. ;
  1002. ; extern OSStatus AEConvertSubDescToDesc(const AESubDesc *subDesc, DescType desiredType, AEDesc *desc)
  1003. ;
  1004.     IF GENERATINGCFM THEN
  1005.         IMPORT_CFM_FUNCTION AEConvertSubDescToDesc
  1006.     ENDIF
  1007.  
  1008. ;
  1009. ; extern OSStatus AEConvertAppleEventAttributesToSubDesc(const AppleEvent *event, AESubDesc *subDesc)
  1010. ;
  1011.     IF GENERATINGCFM THEN
  1012.         IMPORT_CFM_FUNCTION AEConvertAppleEventAttributesToSubDesc
  1013.     ENDIF
  1014.  
  1015. ;
  1016. ; extern DescType AEGetSubDescType(const AESubDesc *subDesc)
  1017. ;
  1018.     IF GENERATINGCFM THEN
  1019.         IMPORT_CFM_FUNCTION AEGetSubDescType
  1020.     ENDIF
  1021.  
  1022. ;
  1023. ; extern DescType AEGetSubDescBasicType(const AESubDesc *subDesc)
  1024. ;
  1025.     IF GENERATINGCFM THEN
  1026.         IMPORT_CFM_FUNCTION AEGetSubDescBasicType
  1027.     ENDIF
  1028.  
  1029. ;
  1030. ; extern Boolean AESubDescIsListOrRecord(const AESubDesc *subDesc)
  1031. ;
  1032.     IF GENERATINGCFM THEN
  1033.         IMPORT_CFM_FUNCTION AESubDescIsListOrRecord
  1034.     ENDIF
  1035.  
  1036. ;
  1037. ; extern OSStatus AEGetSubDescData(const AESubDesc *subDesc, void *dataPtr, ByteCount bufferSize, ByteCount *actualSize)
  1038. ;
  1039.     IF GENERATINGCFM THEN
  1040.         IMPORT_CFM_FUNCTION AEGetSubDescData
  1041.     ENDIF
  1042.  
  1043. ;
  1044. ; extern OSStatus AESetSubDescData(const AESubDesc *subDesc, void *dataPtr, ByteCount sizePtr)
  1045. ;
  1046.     IF GENERATINGCFM THEN
  1047.         IMPORT_CFM_FUNCTION AESetSubDescData
  1048.     ENDIF
  1049.  
  1050. ;
  1051. ; extern OSStatus AEGetSubDescFactorData(const AESubDesc *subDesc, void *factorData, ByteCount bufferSize, ByteCount *actualSize)
  1052. ;
  1053.     IF GENERATINGCFM THEN
  1054.         IMPORT_CFM_FUNCTION AEGetSubDescFactorData
  1055.     ENDIF
  1056.  
  1057. ;
  1058. ; extern OSStatus AECountSubDescItems(const AESubDesc *subDesc, ItemCount *items)
  1059. ;
  1060.     IF GENERATINGCFM THEN
  1061.         IMPORT_CFM_FUNCTION AECountSubDescItems
  1062.     ENDIF
  1063.  
  1064. ;
  1065. ; extern OSStatus AEGetNthSubDesc(const AESubDesc *subDesc, ItemCount item, AEKeyword *keyword, AESubDesc *newSubDesc)
  1066. ;
  1067.     IF GENERATINGCFM THEN
  1068.         IMPORT_CFM_FUNCTION AEGetNthSubDesc
  1069.     ENDIF
  1070.  
  1071. ;
  1072. ; extern OSStatus AEGetKeySubDesc(const AESubDesc *subDesc, AEKeyword keyword, AESubDesc *newSubDesc)
  1073. ;
  1074.     IF GENERATINGCFM THEN
  1075.         IMPORT_CFM_FUNCTION AEGetKeySubDesc
  1076.     ENDIF
  1077.  
  1078.     ENDIF
  1079.     ENDIF
  1080.     ENDIF ; __AEDATAMODEL__ 
  1081.  
  1082.